﻿using System;

namespace Dexter.Logger.Contracts {
	/// <summary>
	/// 	This is the base contacts for the logging context stack
	/// </summary>
	public interface IContextStack {
		/// <summary>
		/// 	Gets the count.
		/// </summary>
		/// <value>The count.</value>
		int Count { get; }

		/// <summary>
		/// 	Clears this instance.
		/// </summary>
		void Clear ( );

		/// <summary>
		/// 	Pops this instance.
		/// </summary>
		/// <returns></returns>
		string Pop ( );

		/// <summary>
		/// 	Pushes the specified message.
		/// </summary>
		/// <param name = "message">The message.</param>
		/// <returns></returns>
		IDisposable Push ( string message );
	}
}